Nie wiem, dlaczego ten kod się nie skompiluje: var result = $"{fieldName}{isDescending ? " desc" : string.Empty}"; Jeśli podzielę to, działa dobrze: var desc = isDescending ? " desc" : string.Empty; var result =
Nie wiem, dlaczego ten kod się nie skompiluje: var result = $"{fieldName}{isDescending ? " desc" : string.Empty}"; Jeśli podzielę to, działa dobrze: var desc = isDescending ? " desc" : string.Empty; var result =
W wersji C # 6.0 w wersji zapoznawczej VS2015 mamy nowego operatora ?., którego można użyć w następujący sposób: public class A { string PropertyOfA { get; set; } } ... var a = new A(); var foo = "bar"; if(a?.PropertyOfA != foo) { //somecode } Co to dokładnie
Stworzyłem przykładowy projekt z dodatkami C # 6.0 - propagacja zerowa i inicjalizacja właściwości jako przykład, ustaw docelową wersję .NET 4.0 i to ... działa. public class Cat { public int TailLength { get; set; } = 4; public Cat Friend { get; set; } public string Mew() { return "Mew!";...
Wersja 6.0 ma nową funkcję nameof, ale nie rozumiem jej celu, ponieważ po prostu pobiera nazwę zmiennej i zmienia ją na ciąg znaków podczas kompilacji. Myślałem, że może mieć jakiś cel podczas używania, <T>ale kiedy próbuję, po nameof(T)prostu drukuje mi Tzamiast używanego typu. Masz pomysł...
Natknąłem się na kod, który powiedział public int MaxHealth => Memory[Address].IsValid ? Memory[Address].Read<int>(Offs.Life.MaxHp) : 0; Teraz jestem nieco zaznajomiony z wyrażeniami Lambda. Po prostu nie widziałem, żeby używało go w ten sposób. Jaka byłaby różnica między...
Przeglądałem najnowsze funkcje wprowadzone w C # 6.0 i właśnie podążyłem za przykładem inicjalizatora właściwości auto, class NewSample { public Guid Id { get; } = Guid.NewGuid(); } ale moje IDE nie rozpoznało składni. Zastanawiam się, jak mogłem włączyć C # 6.0 w Visual Studio 2013. Korzystam...
Zauważyłem, że chociaż interpolacja ciągów jest naprawdę przyjemna, gdy jest stosowana do wywołań formatu ciągu w istniejącej bazie kodu, biorąc pod uwagę ogólnie preferowany limit kolumn, ciąg szybko staje się zbyt długi dla pojedynczej linii. Zwłaszcza, gdy interpolowane wyrażenia są złożone....
tło Mamy projekt, który rozwijamy w VS 2015 z włączonym C # 6, który czasami musi być otwierany przez programistów używających VS 2013 bez C # 6. Nie mamy zamiaru używać C # 6 w tym konkretnym rozwiązaniu (tak bardzo, jak bym chciał). Problem Visual Studio i ReSharper sugerują pomocne...
W C # 6 pojawiła się nowa funkcja: interpolowane ciągi. Pozwalają one umieszczać wyrażenia bezpośrednio w kodzie, zamiast polegać na indeksach: string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); Staje się: string s = $"Adding \"{x}\" and {this.Y()} to...
Testuję program Visual Studio 2015 z C # 6.0, ale funkcje językowe nie działają. W aplikacji internetowej MVC kompiluje się następujący kod: if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName)) { // More logic here... } Jednak po uruchomieniu aplikacji za pośrednictwem Debug i IIS Express...
W ramach dokumentacji Roslyn w serwisie GitHub znajduje się strona o nazwie Stan implementacji funkcji języka z planowanymi funkcjami językowymi dla C # i VB. Jedną z funkcji, której nie mogłem ogarnąć głowy, był private protectedmodyfikator dostępu: private protected string GetId() { … }...
Zaktualizowałem istniejący typ projektu witryny sieci Web Visual Studio 2015, zmieniłem Framework na 4.6. Spodziewałem się wtedy, że wszystkie te nowe funkcje będą dostępne w moim kodzie za plikami. Niestety otrzymuję błędy takie jak: Błąd CS8026: Funkcja „Właściwość treści wyrażenia” nie jest...
Rzucam okiem na kilka nowych funkcji w C # 6, a konkretnie na „używanie statyczne” . using static to nowy rodzaj klauzuli using, która umożliwia importowanie statycznych elementów członkowskich typów bezpośrednio do zakresu. (U dołu wpisu na blogu) Pomysł jest następujący, zgodnie z...
W C # 6 możesz użyć nameof()operatora, aby uzyskać ciąg zawierający nazwę zmiennej lub typu. Czy jest to oceniane w czasie kompilacji, czy w czasie wykonywania za pośrednictwem interfejsu API
Chcę używać C # 6 w moim projekcie (propagacja wartości null, inne funkcje). Zainstalowałem VS 2015 na moim komputerze i działa świetnie i buduje kod testowy, taki jak var user = new SingleUserModel(); //all model fields are null var test = user.User?.Avatar?["blah"]; Ale kiedy wypycham projekt...
Często używam operatora propagującego wartość null w moim kodzie, ponieważ daje mi to bardziej czytelny kod, szczególnie w długich zapytaniach nie muszę sprawdzać wartości null każdej używanej klasy. Poniższy kod zgłasza błąd kompilacji, którego nie możemy użyć operatora propagującego wartość...
Do dziś mogłem korzystać z podstawowych konstruktorów, takich jak: public class Test(string text) { private string mText = text; } Aby móc to zrobić, w poprzednim Visual Studio CTP musiałem dodać to do pliku csproj: <LangVersion>Experimental</LangVersion> W każdym razie nie...
Utworzyłem zautomatyzowaną usługę: public int Foo { get; } To jest tylko getter. Ale kiedy buduję konstruktora, mogę zmienić wartość: public MyClass(string name) { Foo = 5; } Dlaczego jest to możliwe, mimo że jest to opcja tylko do zdobycia?
Nowa funkcja w C # 6.0 pozwala zadeklarować zmienną wewnątrz metody TryParse. Mam kod: string s = "Hello"; if (int.TryParse(s, out var result)) { } Ale otrzymuję błędy kompilacji: Co robię źle? PS: w ustawieniach projektu są ustawione C # 6.0 i .NET Framework 4.6.
Czy to jest obsługiwane? Jeśli tak, czy jest jakaś sztuczka, aby to włączyć? Zakładam, że Razor nie używa wystarczająco nowego kompilatora ...? IDE VS2015 wydaje się być w porządku, ale w czasie wykonywania dostaję CS1056: Nieoczekiwany znak „$”