собственно вопроса два...
I)захотел я сделать что-то наподобие
class Tags
{
public static const String tag1 = "tag1";
public static const String tag2 = "tag2";
// Ессно, так нельзя, надо или (1)
public const String tag1 = "tag1";
public const String tag2 = "tag2";
// или (2)
public static String tag1 = "tag1";
public static String tag2 = "tag2";
}
тут и начинается интересное:
если писать (1), то до первого вызова какого-нибудь метода у Tags константы неинициализорованны
если (2), то константы получаются неконстантными, что не есть идеологически правильно
конструктор типа вопроса не решает, т.к. вызывается в том же случае, что и (1)
можно, конечно, забить и написать static, но может можно сделать это и как-то правильно.
II)и аналогичный вопрос с атрибутами. если у меня в сборке определен атрибут, то его конструктор вызовется только в случае вызова кем-то Assembly.GetCustomAttributes.