Qualcuno può spiegare, perché "privato readonly Int32 [] _array = new [] {8, 7, 5};" può essere nullo?Il campo readonly inizializzato è nullo, perché?
In questo esempio, funziona e _array non è sempre nullo. Ma nel mio codice aziendale ho un codice simliar e _array è sempre nullo. Così ho costretto a dichiararlo come statico.
La classe è una classe proxy parziale dal mio contratto WCF.
using System;
using System.ComponentModel;
namespace NullProblem
{
internal class Program
{
private static void Main(string[] args)
{
var myClass = new MyClass();
// Null Exception in coperate code
int first = myClass.First;
// Works
int firstStatic = myClass.FirstStatic;
}
}
// My partial implemantation
public partial class MyClass
{
private readonly Int32[] _array = new[] {8, 7, 5};
private static readonly Int32[] _arrayStatic = new[] {8, 7, 5};
public int First
{
get { return _array[0]; }
}
public int FirstStatic
{
get { return _arrayStatic[0]; }
}
}
// from WebService Reference.cs
public partial class MyClass : INotifyPropertyChanged
{
// a lot of Stuff
#region Implementation of INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
}
Non è molto uso per mostrarci codice che funziona e dire che c'è qualche altro codice che non funziona. Devi darci un breve ma completo esempio che non funziona. –
Se funziona qui e non nel tuo codice, è abbastanza ovvio che c'è qualcosa di sbagliato nel tuo codice. A meno che non lo pubblichi trovo difficile fornire aiuto. – Gorpik
Funziona come previsto nel mio LINQPad. – Davio