以下(C#Interactive)编译但会爆炸。不确定我错过了什么......
var countries = [];
var per_page = 10;
function generate_pagination(per_page) {
var pagination_links = countries.length / per_page;
var pagination_length = Math.ceil(pagination_links);
$('#pagination').html('');
for (var i = 1; i <= pagination_length; i++) {
$('#pagination').append('<a href="#" class="page">' + i + '</a>');
}
}
function display_countries(start, end) {
$('.new').html('');
for (var i = 0; i < countries.length; i++) {
if (i >= start && i < end) {
$('.new').append('<tr><td>' + (i + 1) + ": " + countries[i] + '</td><td>Action</td></tr>');
}
}
}
$(document).ready(function () {
$("#displayvalues").change(function () {
per_page = $(this).find("option:selected").val()
var end = 1 * per_page;
var start = 0;
display_countries(start, end);
generate_pagination(per_page);
})
$('body').on('click', '.page', function () {
var page_no = $(this).html();
var end = page_no * per_page;
var start = end - per_page;
display_countries(start, end);
return false;
})
$.ajax({
url: './countries.php',
type: 'GET',
data: { countries: true },
cache: false,
async: true,
dataType: 'json',
success: function (data) {
countries = data.countries;
generate_pagination(per_page);
display_countries(0, per_page);
}
});
});
答案 0 :(得分:8)
当然可以!
根据您的代码,t
不是null
,因此?.
是多余的。
但t.GetSomething
并非如此。那是什么引发了NullReferenceException
。
您正在寻找的是:
var result = t.GetSomething?.Invoke();
要了解如何实施新的C#6功能,请查看my article。
答案 1 :(得分:3)
我认为你误解了这个算子的运作方式。
var result = t?.GetSomething();
此处t?.
表示&#34;如果t
为空,请在此处停止并返回null;否则,取消引用t
并检索成员GetSomething
。
现在,您没有查看GetSomething
上的任何内容。相反,你可以这样做:
var result = t?.GetSomething?.Invoke();