我很确定Java会让你这么做,但我可能会错。
List<string> myList = new List<string>();
bool istrue = false;
myList.Add(istrue ? "something" : void);
答案 0 :(得分:9)
你不能那样使用void
。它不是表达式,它是方法sigs中使用的关键字。并且?:
运算符要求所有操作数都是表达式。我甚至确信你不能用Java做到这一点。
为什么不发表if声明?它使你想要做的事情变得更加清晰,正是因为void
在这种背景下毫无意义。
仅在istrue
添加内容,否则不执行任何操作:
List<string> myList = new List<string>();
bool istrue = false;
if (istrue)
{
myList.Add("something");
}
在一行中:
if (istrue) myList.Add("something");
如果istrue
添加内容,则添加空值,否则:
List<string> myList = new List<string>();
bool istrue = false;
if (istrue)
{
myList.Add("something");
}
else
{
myList.Add(null);
}
在一行中(null
与?:
运算符配合使用):
myList.Add(istrue ? "something" : null);
答案 1 :(得分:2)
void
仅作为方法的返回类型合法(1),或者(2)作为指针类型的基础类型。 (感谢@Eric Lippert)。
此代码甚至不会编译。
答案 2 :(得分:1)
这个怎么样
public static void AddIf<T>(this List<T> list, bool flag, T obj)
{
if (flag) { list.Add(obj); }
}
只需传入标志和项目
myList.AddIf(true, item);
myList.AddIf(item!=item2, item2);
答案 3 :(得分:0)
我很高兴这不起作用。如果我调用.Add我希望添加一些内容。如果这种逻辑在你看不到的方法中怎么办?
myList.Add( aBlackBox.Method() );
是否添加或不添加?!
答案 4 :(得分:0)
我很确定Java 不会让你这样做。 void
关键字表示方法不返回任何内容。它与null
不同,也不是与空列表相同,也不能用它来表示“什么都不做”,这就是你在这里的意思。
答案 5 :(得分:0)
void与NULL不一样,
试
List<string> myList = new List<string>();
bool istrue = false;
myList.Add(istrue ? "something" : null);
答案 6 :(得分:0)
你可以
List<string> myList = new List<string>();
myList.Add(false ? "true" : "false");
将“false”添加到列表中。
我猜你上面的代码在将void添加为字符串时遇到了问题。
尝试
myList.Add(istrue ? "something" : string.empty);
修改强> 如果您只想在某些事情发生时添加,那么只需执行
if(isTrue)
myList.Add("something");
答案 7 :(得分:0)
据我了解,您尝试有条件地添加元素作为对象初始值设定项的一部分,而不是在后续的Adds中添加零碎的元素。我在同一条船上。
这是谷歌的最高结果,所以后人......
只要条件对集合中的每个元素都相同:
import static javax.swing.JOptionPane.showMessageDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class XFrame extends JFrame implements ActionListener {
JButton b = new JButton("Click me");
ActionListener otherActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showMessageDialog(XFrame.this, "The other action says: 'Hi'");
}
};
public XFrame() {
getContentPane().add(b);
b.addActionListener(this);
b.addActionListener(otherActionListener);
}
@Override
public void actionPerformed(ActionEvent e) {
showMessageDialog(this, "XFrame says: 'hello'");
}
public static void main(String[] args) {
XFrame frame = new XFrame();
frame.setSize(100,60);
frame.setVisible(true);
}
}
答案 8 :(得分:0)
您可以创建扩展方法:
<!-- jQuery -->
<script>
$(document).ready(function() {
// Confirm user deletion
$(".link-delete-user").click(function() {
event.preventDefault();
var db = $(this).attr('data-id');
$("#delete-user-id").val(db);
$("#delete-user-forename").text($(this).attr('data-forename'));
$("#delete-user-name").text($(this).attr('data-name'));
$("#modal-delete-user").modal("show");
});
// Delete user
$("#form-delete-user").on('submit', function() {
event.preventDefault();
$.ajax({
url: "crud-delete.php",
type: "POST",
data: $('#form-delete-user').serialize(),
success: function(resp) {
$('#form-delete-user')[0].reset();
$('#modal-delete-user').modal('hide');
$('#table-users').html(resp);
}
});
});
});
</script>
您以这种方式使用它:
public static void Add<T>(this IList<T> source, T item, Func<bool> predicate)
{
if (predicate())
{
source.Add(item);
}
}