よく判らない警告が出る。
JsonArray arr = jsonNode.AsArray();
string[] paramArray = new string[arr.Count];
ArrayList list = new ArrayList();
for (int i = 0; i < arr.Count; i++)
{
list.Add(arr[i].ToString()); ※「warning CS8602: null 参照の可能性があるものの逆参照です。」が発生する。
}
return paramArray;
正解は、
JsonArray arr = jsonNode.AsArray();
string[] paramArray = new string[arr.Count];
ArrayList list = new ArrayList();
for (int i = 0; i < arr.Count; i++)
{
var ji = arr[i];
list.Add((ji != null)?ji.ToString():"");
}
return paramArray;
arr[i] は何の型かは不定だから、var宣言の変数に格納するしか手段はない。
そう明示的に書けば、CS8602も大人しくなる。
が・・・
普通の型の配列子にはしつこい。
関数(... string?[]? paramArray) {
・・・
object?[] param = new object?[] { null, null, null, null};
if (paramArray != null)
{
param[0] = paramArray[0].Replace("%EXEPATH%", Resource.GetExePath());
}
t.InvokeMember(methodName,
BindingFlags.InvokeMethod,
null,
obj,
param);
は、
関数(... string?[]? paramArray) {
・・・
object?[] param = new object?[] { null, null, null, null};
if (paramArray != null)
{
var p0 = paramArray[0];
if (p0 != null)
{
p0 = p0.Replace("%EXEPATH%", Resource.GetExePath());
}
param[0] = p0;
}
t.InvokeMember(methodName,
BindingFlags.InvokeMethod,
null,
obj,
param);