Поделиться через


Ошибка компилятора CS0765

Обновлен: Ноябрь 2007

Сообщение об ошибке

В деревьях выражений не могут использоваться разделяемые методы, имеющие только определяющее объявление или только удаленные условные методы
Partial methods with only a defining declaration or removed conditional methods cannot be used in expression trees

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

Исправление ошибки

  • Добавьте реализующее объявление для разделяемого метода или удалите код, который является причиной выполнения условного метода при компиляции.

Пример

В следующем примере создается ошибка CS0765 в двух местах:

// cs0765.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Linq.Expressions;

public delegate void dele();

public class ConClass
{
    [Conditional("CONDITION")]
    public static void TestMethod() { }
}

public partial class PartClass : IEnumerable
{
    List<object> list = new List<object>();

    partial void Add(int x);

    public IEnumerator GetEnumerator()
    {
        for (int i = 0; i < list.Count; i++)
            yield return list[i];
    }

    static void Main()
    {
        Expression<Func<PartClass>> testExpr1 = () => new PartClass { 1, 2 }; // CS0765
        Expression<dele> testExpr2 = () => ConClass.TestMethod(); // CS0765
    }
}

См. также

Основные понятия

Деревья выражений

Ссылки

Разделяемые классы и методы (Руководство по программированию в C#)