저는 C#으로 전환하는 vb.net 프로그래머입니다. VBer에 대한 C# 질문. 비공개 필드를 Static으로 선언해야합니까?
나는이using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace eScoreSwapper
{
class Program
{
private string _dbName = ConfigurationManager.AppSettings["dbName"];
static void Main(string[] args) {}
static void InitVars()
{
if (string.IsNullOrEmpty(_dbName)) _dbName = "";
}
}
}
이는 _dbName 변수 InitVars의 경우 절에서 컴파일 오류를주고있다 (NET20 대상) 콘솔 응용 프로그램에 대한 다음 코드를
Error 1 An object reference is required for the non-static field, method, or property 'eScoreSwapper.Program._dbName' C:\Users\SethS\Documents\eScore\Versions\Trunk\dotNet\eScoreSwapper\eScoreSwapper\Program.cs 26 38 eScoreSwapper
그것을인가 그것이 사실이기 때문에. C#에서는 정적이라고 선언되지 않는 한 private 클래스 필드를 참조 할 수 없습니까? 나는 틀린 일을하고 있다고 확신한다.
내가 여기있는 동안 다른 C# 질문을 할 수 있습니다. if 문이 유효한 이유는 무엇입니까? 중괄호가 필요없는 이유는 무엇입니까? 조건에 단일 표현식이 오는 한 유효한 구문입니까 (t-sql IF와 같습니다).
도움 주셔서 감사합니다.
세스
I LOVE STACKOVERFLOW Seth –
null-coalescing 연산자 (http://msdn.microsoft.com/en-us/library/ms173224.aspx)를 사용할 수 있음을 지적 할 것입니다. 즉'InitVars()'내부에서'_dbName = ConfigurationManager.AppSettings [ "dbName"] ?? ";". 그건 단지 클래스에서 초기화하는 대신에, 방금 초기화 한 것을 그 메소드 안에서 체크하는 것입니다. 이것은 당신의 질문과는 아무런 관련이 없지만, C#으로 바꾸고 있다면이 편리한 연산자에 대해 알아두면 좋을 것 같습니다. – jloubert