Der Typ "string" muss ein null-Wert geben, um es zu verwenden als parameter " T "in der generischen Typ oder Methode" System.Nullable<T>'
public virtual int Fill(DataSetservices.Jobs_detailsDataTable dataTable,
global::System.Nullable<global::System.String> fromdate,
global::System.Nullable<global::System.DateTime> todate)
Schrieb ich obigen code in dataset.xsd
in C#, aber es wirft einen Fehler:
Fehler 1
Der Typ "string" muss ein null-Wert geben, um
verwenden Sie als parameter " T " in der generischen Typ oder Methode
'System.Nullable'
Mir empfehlen wie die Verwendung von string, da möchte ich die Verwendung von string und sonst nichts
Verwenden Sie nur
Nicht verlängern die automatisch generierte
Sie haben viele verschiedene Arten/namespaces aufgerufen
global::System.String fromDate
.Nicht verlängern die automatisch generierte
designer.cs
- Datei unter der xsd-Datei. Stattdessen erstellen Sie eine weitere Datei mit dem gleichen Namen(ohne designer) und verlängern Sie die TableAdapter
Klassen mit den partial
Schlüsselwort. Das funktioniert, da die automatisch generierten Klassen sind auch partial
. Die designer.cs
Datei wird neu erstellt werden, auf der nächsten änderung im designer und alle Ihre änderungen verloren.Nullable<T>
wird verwendet, um "amplify" eine Art, die nicht halten Sie die null
Wert in einen Typ, der das tut. String
ist schon ein Typ, der halt die null
Wert. Daher können Sie nicht verwenden Sie die Kombination Nullable<string>
. (Lesen Sie dazu Nullable<T>
hier: msdn.microsoft.com/en-us/library/b3h38hb0.aspx). Kurz gesagt, nur drehen Sie Ihre Methode Prototyp in: public virtual int Fill((DataSetservices.Jobs_detailsDataTable dataTable, string fromdate, DateTime? todate);
Sie haben viele verschiedene Arten/namespaces aufgerufen
System
, Nullable
, String
, DateTime
und so weiter, da Sie verwenden, dass viele global
namespace-Aliase?
InformationsquelleAutor Pranav Mishra | 2013-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
string
ist schon null-Werte zulässt, weil es eine Referenz geben. Sie nicht brauchen, um wickeln Sie es inNullable
um einen null-Wert. Es ist nicht nur nicht nötig, aber wie pro die Fehlermeldung, die Sie bekommen, es ist auch nicht möglich. Nur null-Wert-Typen verwendet werden kann als generisches argument fürNullable
.InformationsquelleAutor Servy
String-Klasse ist eine Klasse, die es nicht
struct
wieSystem.Int32
oder andere primitive Typen. Es können null-Wert.Nullable<T>
arbeitet mit Wert-Typen.Vom Namen erscheint, das Sie speichern möchten
DateTime
Objekt. Es ist immer besser zu habenDateTime
in seiner eigenen Art, dh.DateTime
für null-Werte zulässt, die Sie verwenden könnenNullable<DateTime>
oderDateTime?
InformationsquelleAutor user2711965
Wenn man sich die Dokumentation auf der MSDN-Website über Nullable<T> Sie werden feststellen, dass T beschränkt ist mit struct. Einschränkungen für Typparameter zeigt, dass eine solche Einschränkung schränkt die generischen parameter zu einem Wert geben, außer Nullable<T> (bitte beachten Sie, dass Nullable<T> ist ein struct!).
Als MSDN docs sagen, ist string ein Referenztyp was bedeutet, dass der generische parameter Einschränkung gemacht für Nullable<T> erlöschen Typen wie Nullable<string> oder mit einer beliebigen Referenz-Typ als generischer parameter.
InformationsquelleAutor Andrei15193