Цель c - статические участники и константы

В C# используйте 'использование', чтобы удостовериться, что объект расположен, когда это выходит из объема. т.е.

        using(IDataReader results = DbManager.ExecuteQuery(dbCommand, transaction))
        {
            while (results.Read())
            {
                //do something
            }
        }

кроме того, проверьте на нулевые значения после кастинга

        MyObject obj = this.bindingSource.Current as MyObject;
        if (MyObject != null)
        {
           // do something
        }

кроме того, я использую перечисления, когда это возможно, чтобы избежать жесткого кодирования, опечаток и обеспечить легкое переименование при необходимости, т.е.

    private enum MyTableColumns
{ 
    UserID,
    UserName
}

private enum StoredProcedures
{
    usp_getMyUser,
    usp_doSomething
}

public static MyUser GetMyUser(int userID)
{
    List<SqlParameter> spParameters = new List<SqlParameter>();

    spParameters.Add(new SqlParameter(MyTableColumns.UserID.ToString(), userID));


    return MyDB.GetEntity(StoredProcedures.usp_getMyUser.ToString(), spParameters, CommandType.StoredProcedure);
}
5
задан mk12 5 September 2009 в 17:01
поделиться

2 ответа

Первая является переменной экземпляра и создает something для каждого экземпляра SomeClass. Это похоже на C

typedef struct {
    NSObject *something;
} SomeClass;

. Последний объявляет глобальную переменную, которая не имеет реальной связи с SomeClass. В C это эквивалентно

NSObject *something;

, определенному в глобальной области видимости. Objective-C на самом деле не имеет переменных класса, поэтому используются глобальные переменные (скорее, иногда используются; следует использовать переменные с единицей компиляции и статическим классом хранения ) .

Самый простой способ определения переменной «класса» - это определение статической переменной в файле реализации. Таким образом, только методы класса могут получить к нему доступ, и вы избежите загрязнения глобального пространства имен. Если вы хотите, чтобы он был общедоступным, определите средства доступа.

Правильное уничтожение переменных класса может быть непростой задачей. Память будет освобождена, а открытые файлы будут автоматически закрыты при выходе из приложения, но другие ресурсы могут обрабатываться не так хорошо.

7
ответ дан 14 December 2019 в 01:12
поделиться

Что касается вопроса "final vs const", то оба они похожи. Они заявляют, что значение не может измениться. обратите внимание, что в Java, поскольку все значения (кроме примитивов) являются указателями, объект, на который он указывает, может измениться внизу, но расположение в памяти (указатель) никогда не изменится. Я считаю, что вы ожидаете аналогичного поведения в Objective C, и всегда рекомендуется не позволять изменяемым элементам быть "final" или "const", поскольку значения внутри объекта все еще могут быть изменены.

2
ответ дан 14 December 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: