小编sin*_*ash的帖子

Python中的"pass"与"return None"相同?

我一直在学习python大约一周,下面是问题:

def Foo():
    pass

def Bar():
    return None
Run Code Online (Sandbox Code Playgroud)

用法

a = Foo()
print(a)
# None
b = Bar()
print(b)
# None
Run Code Online (Sandbox Code Playgroud)

问题:1.当我们已经返回时,为什么我们需要通过?是否有一些情况,返回无法处理但传递可以?

python python-2.7

13
推荐指数
4
解决办法
5902
查看次数

Varchar(max)列不允许是SQL Server中的主键

Varchar(max)列不允许是SQL Server中的主键.

可以作为主键的varchar类型的最大长度是多少.

这可能是一种不好的做法,但遇到了这种情况.

sql sql-server

9
推荐指数
2
解决办法
1万
查看次数

我如何在 IValidatableObject.Validate 方法的 ValidationContext 参数中提供可用的 IServiceProvider

控制器IValidatableObject.Validate内部调用并传递一个ValidationContext对象作为参数。我想使用validationContext.GetService()方法来获取服务对象并使用它。

我可以使用 AutoFac(DI Injection dll)将此服务作为控制器构造函数的依赖项传递。我如何使其可用于对象ValidationContext

这个 stackoverflow 问题可能包含答案,但我不完全理解它:Asp.Net MVC3: Set custom IServiceProvider in ValidationContext so validators can resolve services

这是代码:

型号:员工

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace ValidationContextDemo.Models
{
    public class Employee : IValidatableObject
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int DepartmentId { get; set; }

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            var result = new List<ValidationResult>();
            var EmployeeService = (Service.EmployeeService)validationContext.GetService(typeof(Service.EmployeeService));
            if (!EmployeeService.IsValidDepartment(this.DepartmentId)) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc inversion-of-control autofac

7
推荐指数
1
解决办法
3221
查看次数

与Func <TResult>相同的动作?

我遇到了一些需要一些知识的情况.

以下是代码:

// A function to match the delegate
public static int DoSomething()
{
   Console.WriteLine("i am called");
   return 1;
}

// Usage
Action action = () => DoSomething();
Func<int> func = () => DoSomething();
action();
func();
Run Code Online (Sandbox Code Playgroud)

我的理解Action曾经是它应该匹配一个不接受任何参数并且不返回任何参数的委托.

为此Func<int>它应该匹配一个不接受参数并返回一个的委托int.

DoSomething方法返回一个整数,因此我的问题() => DoSomething()是:返回一个委托int.Func按预期工作,但Action没有.为什么?我在这里没有理解什么?

代码编译并正确运行,两者都是输出i am called.我想知道的是,为什么Action action = () => DoSomething();不是编译时错误?

.net c# lambda delegates

7
推荐指数
2
解决办法
642
查看次数

如何在c#中重载postfix和prefix运算符

我们如何在c#中实现postfix和prefix运算符的重载

void Main()
{
    MyClass myclass=new MyClass();
    myclass.x=5;
    Console.WriteLine((++myclass).x);
          Console.WriteLine((myclass++).x);
}

public class MyClass
{
    public int x;
    public static MyClass operator ++(MyClass m)
    {
        m.x=m.x+1;
        return m;
    }

}
Run Code Online (Sandbox Code Playgroud)

这可能是一个不必要的运算符重载,但它已知可以重载++运算符.我们如何在这里实现不同的行为(i ++,++ i)

c#

5
推荐指数
0
解决办法
2219
查看次数

Linq扩展方法在Visual Studio 2015立即窗口中不可用

错误CS1061:'ICollection <>'不包含'SelectMany'的定义,并且没有可以找到接受类型'ICollection <>'的第一个参数的扩展方法'SelectMany'(您是否缺少using指令或程序集引用? )

Visual Studio 2015支持在即时窗口中以调试模式评估linq lambda表达式.我已经使用控制台应用程序对其进行了测试,其中我获取Process.GetProcesses(),转到立即窗口并开始写入.Select.Where在其上.它工作正常.

但是,我无法在我的项目中做同样的事情.

我的断点就在这条线上:

return Dimensions.Values.SelectMany(dimension => dimension.Attributes)
                        .FirstOrDefault(dimensionAttribute => key.Equals(dimensionAttribute.Key));
Run Code Online (Sandbox Code Playgroud)

做一个F10工作.但是,当我尝试在部分中运行相同的表达式时,在即时窗口中,即Dimensions.Values.SelectMany(dimension => dimension.Attributes),我得到上述错误.

我是否试图以不正确的方式评估这个问题?我错过了什么?

c# linq visual-studio visual-studio-2015

5
推荐指数
1
解决办法
705
查看次数