2012-11-09 15 views
11

Sto scrivendo un programma, dove ho parecchi proprietà di tipo booleano definiti:Modificare il valore predefinito di booleano

private bool kajmak = true; 
    public bool Kajmak 
    { 
     get { return kajmak ; } 
     set { kajmak = value; FirePropertyChanged(() => Kajmak); } 
    } 

Come vedete, ho impostato kajmak a true all'inizio ..- la ragione è irrilevante. (Potresti sapere che il valore di predefinito di una variabile bool è false).

Ora, c'è un modo, per modificare il valore predefinito di un bool a true? Quindi mi sento di scrivere:

private bool kajmak; //kajmak = true 

invece di

private bool kajmak = true; 

Che cosa potevo fare per raggiungere questo obiettivo?

+2

Non credo che tu possa cambiare questo. Continua a fare quello che stai facendo. –

+1

Non farlo, è più un problema che ne vale la pena, non pensarci nemmeno a farlo. – Davio

+2

Anche se tu potessi ... cosa guadagneresti? –

risposta

17

Perché booleani sono false per impostazione predefinita, utilizzo i moduli positivi nei miei nomi, ad esempio IsInitialized, HasSomething, ecc. che desidero essere falso per impostazione predefinita finché non li imposto esplicitamente.

Se trovi che è necessario che qualcosa sia true per impostazione predefinita, forse è necessario rinominare la variabile in modo che abbia più senso quando l'impostazione predefinita è false.

+0

Ho sempre fatto anche questo, e poi ho capito che è una specie di argomento sciocco quando mi sono imbattuto in uno scenario in cui voglio che la forma positiva sia vera da predefinito. Questo sostanzialmente ribalta questo argomento :) –

+1

Bene, puoi sempre impostarli su true nel tuo costruttore. :) – Davio

0

No, non è possibile modificare il valore predefinito. Se potessi cambiare il valore predefinito, non sarebbe più il default;).

Ma per impostare il valore predefinito valore a null, è possibile utilizzare questo:

bool? kajmak; 

Ma non è ciò che si vuole ...

3

No. Non c'è alcun modo per modificare il valore predefinito assegnato da .NET. La cosa migliore è quello sia di assegnare il valore di default appropriato nel membro privato:

private book kajmak = false; 

Oppure utilizzare il costruttore, come si suppone che e assegnare le impostazioni di default di classe c'è:

public class SomeClass 
{ 
    public SomeClass() 
    { 
     Kajmak = false; 
    } 

    public book Kajmak { get; set; } 
} 
-2

È possibile creare una classe myBool che per impostazione predefinita è false e una conversione implicita da bool alla classe.

+0

Troppo sovraccarico, non farlo – user230910

0

Nel tentativo di fare qualcosa di simile, un collega mi ha illuminato al bool? genere. Può essere vero, falso o nullo e non si oppone all'essere sul lato sinistro di tale comparatore. Questo non risponde alla tua domanda su come bool predefinito su true, ma risolve il tuo problema concettuale di volere che le tue variabili siano definibili come true di default.

I post solo perché questo era il risultato migliore quando ho cercato, e questa informazione è stata utile per me. Spero che sarà per gli altri a trovare questa pagina.

0

In servizio:

public bool Kajmak { get; set; } = true;