Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Любопытный - это должно работать IIRC; я буду видеть, могу ли я сделать быстрый пример - однако, Вы могли бы хотеть проверить, что у Вас есть полностью определенное перечислимое имя (т.е. включая пространство имен).
[обновление] От здесь кажется что версия RTM, поставленная с ошибкой при разрешении перечисления. Одно предложенное обходное решение (на той странице) должно было добавить global::
префикс. Это хорошо работает для меня без этого обходного решения, поэтому возможно, это фиксируется в 3,5 SP1? Это также предположительно хорошо работает в 3,5 при использовании неполного имени, если перечисление находится в том же пространстве имен.
[пример] Да, хорошо работал: с Northwind я определил перечисление для поставлющейся страны:
namespace Foo.Bar
{
public enum MyEnum
{
France,
Belgium,
Brazil,
Switzerland
}
}
я тогда отредактировал dbml для имения:
<Column Name="ShipCountry" Type="Foo.Bar.MyEnum" DbType="NVarChar(15)" CanBeNull="true" />
Это генерировало:
private Foo.Bar.MyEnum _ShipCountry;
//...
[Column(Storage="_ShipCountry", DbType="NVarChar(15)", CanBeNull=true)]
public Foo.Bar.MyEnum ShipCountry
{ get {...} set {...} }
И наконец записал запрос:
using (DataClasses1DataContext ctx = new DataClasses1DataContext())
{
var qry = from order in ctx.Orders
where order.ShipCountry == Foo.Bar.MyEnum.Brazil
|| order.ShipCountry == Foo.Bar.MyEnum.Belgium
select order;
foreach (var order in qry.Take(10))
{
Console.WriteLine("{0}, {1}", order.OrderID, order.ShipCountry);
}
}
Хорошо работал; результаты:
10250, Brazil
10252, Belgium
10253, Brazil
10256, Brazil
10261, Brazil
10287, Brazil
10290, Brazil
10291, Brazil
10292, Brazil
10299, Brazil
Я знаю, что на это ответили, но я все еще получаю эту ошибку. Очень странно.
В любом случае, я нашел решение. Вам нужно ПРЕДВАРИТЕЛЬНО полное пространство имен перечисления с помощью global ::
как WTF? В яблочко. Я знаю, это звучит очень странно. Вот пример экрана =>
alt text http://img11.imageshack.us/img11/7517/lolzqg.png
Так отстой: (
В любом случае, я этого не понял. Какой-то чувак позвонил Мэтт , сделал. И он опубликовал отчет об ошибке в MS Connect, и они не могут воспроизвести его, поэтому, я думаю, он не исправлен.
В любом случае, HTH.
Если вы добавите global :: qualyfier и нажмете Control + пробел над типом в файле designer.cs, он распознает тип, и вы сможете удалить его.