0

私はC#が初めてで、間違っているところはどこでも修正してください
。Nullableプロパティを持つクラスを作成しようとしていますが、クラスのビルドでエラーが発生します

public class vwAcdAdmissionWithvwAcdAdmissionSessionDetailWithAllMaster1
    {
        public Nullable<string> Name { get; set; }
        public Nullable<string> StudentNameWithLedgerName { get; set; }
        public Nullable<decimal> AASDid { get; set; }
        public Nullable<decimal> StudentLedgerId { get; set; }
        public Nullable<string> LedgerName { get; set; }
        public Nullable<decimal> SessionId { get; set; }
        public Nullable<string> ScholarNo { get; set; }
        public Nullable<decimal> ClassId { get; set; }
        public Nullable<decimal> SectionId { get; set; }
        public Nullable<decimal> MediumId { get; set; }
        public Nullable<decimal> StreamId { get; set; }
        public Nullable<decimal> HouseId { get; set; }
        public Nullable<decimal> FeeCategoryId { get; set; }
        public Nullable<decimal> SchemeId { get; set; }
        public Nullable<decimal> RollNo { get; set; }
        public Nullable<decimal> SchoolId { get; set; }
        public Nullable<decimal> UserId { get; set; }
        public Nullable<decimal> ShiftId { get; set; }
        public Nullable<string> StreamName { get; set; }
        public Nullable<string> ClassName { get; set; }
        public Nullable<string> HouseName { get; set; }
        public Nullable<string> SectionName { get; set; }
        public Nullable<string> ShiftName { get; set; }
        public Nullable<string> MediumName { get; set; }
        public Nullable<string> FeeCategoryName { get; set; }
        public Nullable<string> DiscountType { get; set; }
        public Nullable<decimal> Discount { get; set; }
}

エラーはエラーです 。意味がわかりませんでした。今できることを教えて ください。貴重なフィードバックをありがとう
The type 'string' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable<T>'


文字列をヌル可能にしたい理由は、前回の投稿と同様です。 最後の投稿
は、ヌル不可の文字列を返すとエラーになります

4

5 に答える 5

6

stringクラスなので、すでにnull許容型です。Nullable<T>sでのみ使用できますstruct

のソースコードを見るNullable<T>

public struct Nullable<T> where T : struct

stringここで一般的な制約を確実に満たしていません。

于 2013-11-14T06:00:45.203 に答える
3

メッセージはそれが何を意味するかを示しています:で使用できるのは構造体 (値の型)だけNullable<T>です。

string(またはSystem.String) は参照型であるため、コンパイラ エラーの原因となる構造体ではないことは間違いありません。- そのような (参照) 型の式は本質的nullに値として許可され、それらを でラップする必要はありませんNullable

これを「修正」するには、単純にすべてNullable<string> xを に変更しstring xます。

于 2013-11-14T06:00:45.363 に答える
2

ここにはすでに多くの正解がありますが、OP はまだ少し混乱しているように見えるので、この点をできるだけ単純かつ明確にしたいと思います。

単独では の値を持つことができないNullable<something>とともに使用する必要があります。たとえば、デフォルト値は( 01.01.01を表す定数) です、. 同じことが言えます; の値を保持することはできませんsomethingNullDateTimeDateTime.MinValueNullintnull

つまり、次のことはできません。

DateTime invalidDate = null;

しかし、あなたはできる:

Nullable<DateTime> validDate = null;

一方、文字列はnullになる可能性があるため、基本的にNullableは必要ありません。

string justFine = null;

したがって、使用しようとしてもNullable<string>ほとんど意味がありません。これは基本的に、この問題を解決するために知っておく必要があることです。

于 2013-11-14T07:12:59.230 に答える
2

string は参照型であり、Nullable T で使用される for は値型でなければなりません。 http://msdn.microsoft.com/en-us/library/362314fe(v=vs.90).aspx
http://msdn.microsoft.com/en-us/library/vstudio/1t3y8s4s.aspx

とにかくあなたはできるstring s = nullので、その必要はありませんNullable<string>

于 2013-11-14T06:00:58.090 に答える
0

decimalValueType です。stringクラスです。でラップしない限り、ValueTypes である変数に Null を割り当てることはできませんNullable<>。Null は、 のようなクラスである変数に既に割り当てることができますstring

于 2013-11-14T06:01:41.597 に答える