const Array



  • Hai, ich möchte einen Array mit Konstanten machen, und gehe folgendermassen vor:

    const double[] ALPHA = new double[6] { 0.0, 1.0, 0.6930, 0.989109801178938954940554, 1.0, 0.5 };
    

    Da meckert aber der Compiler:
    The expression being assigned to 'ALPHA' must be constant

    Wo liegt mein Denkfehler?



  • Ich glaube nicht dass das so funktioniert. Nimm dann fuer ALPHA lieber einen struct.



  • Hab ich auch schon versucht, aber wie macht man nen struct konstant, und wie kann ich einen struct initialisieren ohne Parameter???

    Hab auch schon überlegt ob ich es mit einem enum mache, der nicht aber keine double



  • Ok, ich hab es jetzt so gelösst, meiner Ansicht nach nicht die schönste Weise, aber es geht:

    public sealed class Konstanten
    {
       public class ALPHA
       {
    	private const double a1 = 1.0;
    	private const double a2 = 0.6930;
    	private const double a3 = 0.989109801178938954940554;
    	private const double a4 = 1.0;
    	private const double a5 = 0.5;
    
    	public double A1
    	{
    		get{ return a1; }
    	}
    
    	public double A2
    	{
    		get{ return a2; }
    	}
    
    	public double A3
    	{
    		get{ return a3; }
    	}
    
    	public double A4
    	{
    		get{ return a4; }
    	}
    
    	public double A5
    	{
    		get{ return a5; }
    	}
    
            //Weitere Konstanten
      }
    }
    


  • Es macht keinen Sinn, Konstanten noch zusaetzlich durch Properties zu Kapseln...

    public class Konstanten
    {
      public struct ALPHA
      {
         public const double A1 = 1.0;
         public const double A2 = 0.6930;
         public const double A3 = 0.989109801178938954940554;
         public const double A4 = 1.0;
         public const double A5 = 0.5; 
      }
    }
    
    public struct BETA
    {
      public const double A1 = 1.0;
      public const double A2 = 0.6930;
      public const double A3 = 0.989109801178938954940554;
      public const double A4 = 1.0;
      public const double A5 = 0.5; 
    }
    
    public class Test()
    {
      public void Foo()
      {
         int x = Konstanten.ALPHA.A1
         int y = BETA.A1
      }
    }
    


  • Warum in die Ferne schweifen das gute liegt so nah 😃

    Hast Recht


Anmelden zum Antworten