Web Log di Adrian Florea

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
posts - 440, comments - 2715, trackbacks - 3944

My Links

Archives

Post Categories

Image Galleries

.RO Blogs

.RO People

.RO Sites

Blogs

Furls

Links

vinCitori

string.Empty non è una "constant expression"!

A tutti string.Empty potrebbe sembrare un'espressione costante, ma in senso C# non lo è!

Empty è definito come campo static readonly e non come const, perciò non è una "constant expression" (C# Language Specification, 14.15).

Una conseguenza di questo fatto? Il seguente banalissimo snippet non compila!

using System;

class FooAttribute: Attribute
{
  public FooAttribute(string arg){}
}

class Test
{
  [Foo(string.Empty)]
  static void DoSomething()
  {
    Console.WriteLine("I did something");
  }

  static void Main()
  {
    DoSomething();
    Console.Read();
  }
}

Otteniamo errore di compilazione: "An attribute argument must be a constant expression, typeof expression or array creation expression" e dobbiamo sostituire string.Empty con "" oppure con null.

Strano, vero?

Print | posted on lunedì 23 agosto 2004 15:33 | Filed Under [ Carillon .NET ]

Powered by:
Powered By Subtext Powered By ASP.NET