Другим случаем, когда NullReferenceExceptions
может случиться, является (неправильное) использование оператора as
:
class Book {
public string Name { get; set; }
}
class Car { }
Car mycar = new Car();
Book mybook = mycar as Book; // Incompatible conversion --> mybook = null
Console.WriteLine(mybook.Name); // NullReferenceException
Здесь Book
и Car
являются несовместимыми типами; a Car
не может быть преобразован / передан в Book
. Когда этот сбой завершается неудачно, as
возвращает null
. Используя mybook
после этого, вы вызываете NullReferenceException
.
В общем случае вы должны использовать cast или as
, как показано ниже:
Если вы ожидаете преобразования типа в всегда преуспевает (т. е. вы знаете, какой объект должен быть впереди времени), тогда вы должны использовать cast:
ComicBook cb = (ComicBook)specificBook;
Если вы не уверены в типе, но хотите попробовать , чтобы использовать его как определенный тип, затем используйте as
:
ComicBook cb = specificBook as ComicBook;
if (cb != null) {
// ...
}
Это работает для меня (gnuplot 4.4)
plot "./file.dat" u 1:2:3 with lines palette
Надеюсь, что это поможет.
Когда я запустил ваш код, gnuplot не смог передать часть «rgb».
. Пример использования тега переменной см. в аналогичном вопросе: GNUPLOT: точечный график с размером данных в зависимости от размера
с полезными примерами, найденными здесь: http://gnuplot.sourceforge.net/demo/pointsize.html
Все самое лучшее
Tom
plot 'foo.dat' with lines linecolor variable
или сокращенно:
plot 'foo.dat' w l lc var
Это было задано давно, но у меня был тот же вопрос. И наиболее подходящим способом получения легенды / названия для «переменных» цветов было:
# set this to the range of your variable which you want to color-encode
# or leave it out
set cbrange [0:1]
# define the palette to your liking
set palette defined ( 0 "#B0B0B0", 0.333 "#FF0000", 0.666 "#0000FF", 1.0 "#000000" )
# in this example, column 3 is mapped to the colors of the palette
plot "data.txt" u 1:2:3 w l lc palette z
(проверено на gnuplot 4.6 patchlevel 4)