我试图在他们创建的疯狂情况下向某人展示接口的用途.它们在列表中有几个不相关的对象,需要对每个对象中的两个字符串属性执行操作.我指出,如果他们将属性定义为接口的一部分,他们可以使用接口对象作为作用于它的方法参数的类型; 例如:
void PrintProperties(IEnumerable<ISpecialProperties> list)
{
foreach (var item in list)
{
Console.WriteLine("{0} {1}", item.Prop1, item.Prop2);
}
}Run Code Online (Sandbox Code Playgroud)
这似乎一切都很好,但是需要处理的列表不是(也不应该)使用接口作为类型参数声明.但是,您似乎无法转换为其他类型参数.例如,这失败了,我无法理解为什么:
using System;
using System.Collections.Generic;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
List<Test> myList = new List<Test>();
for (int i = 0; i < 5; i++)
{
myList.Add(new Test());
}
PrintList((IEnumerable<IDoSomething>)myList);
}
static void PrintList(IEnumerable<IDoSomething> list)
{
foreach (IDoSomething item in list)
{
item.DoSomething();
}
}
}
interface IDoSomething
{
void DoSomething();
}
public class Test : IDoSomething …Run Code Online (Sandbox Code Playgroud) 我需要在svn工作副本中搜索"foo"中的所有cpp/h文件,完全排除svn的特殊文件夹.GNU grep 的确切命令是什么?
据我所知,在C#中,如果没有另外标记,所有字段都是默认的私有字段.
class Foo
{
private string bar;
}
class Foo
{
string bar;
}
Run Code Online (Sandbox Code Playgroud)
我猜这两个声明是平等的.
所以我的问题是:我应该将私有变量标记为私有变量private?
我正在尝试设置类似于以下内容的继承层次结构:
abstract class Vehicle
{
public string Name;
public List<Axle> Axles;
}
class Motorcycle : Vehicle
{
}
class Car : Vehicle
{
}
abstract class Axle
{
public int Length;
public void Turn(int numTurns) { ... }
}
class MotorcycleAxle : Axle
{
public bool WheelAttached;
}
class CarAxle : Axle
{
public bool LeftWheelAttached;
public bool RightWheelAttached;
}
Run Code Online (Sandbox Code Playgroud)
我想只在Motorcycle对象的Axles数组中存储MotorcycleAxle对象,在Car对象的Axles数组中存储CarAxle对象.问题是没有办法覆盖子类中的数组来强制一个或另一个.理想情况下,以下内容对摩托车类有效:
class Motorcycle : Vehicle
{
public override List<MotorcycleAxle> Axles;
}
Run Code Online (Sandbox Code Playgroud)
但是当覆盖时类型必须匹配.我该如何支持这种架构?在Axles成员访问的任何地方,我是否只需要进行大量的运行时类型检查和转换?我不喜欢添加运行时类型检查,因为你开始失去强类型和多态的好处.在这种情况下必须至少进行一些运行时检查,因为WheelAttached和Left/RightWheelAttached属性取决于类型,但我想最小化它们.
使用时将字符串"¿"写出来
System.out.println(new String("¿".getBytes("UTF-8")));
Run Code Online (Sandbox Code Playgroud)
¿写的而不仅仅是¿
为什么?我们如何解决它?
为什么以下在Linux与Windows中显示不同?
System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));
Run Code Online (Sandbox Code Playgroud)
在Windows中:
¿
在Linux中:
一个
我正在使用称为django-granular-permissions(http://code.google.com/p/django-granular-permissions/)的行级权限模型.权限模型只有两个字段,即content-type和object id.
我使用了以下查询:
User.objects.filter(Q(row_permission_set__name='staff') | \
Q(row_permission_set__name='student'), \
row_permission_set__object_id=labsite.id)
Run Code Online (Sandbox Code Playgroud)
我想在结果集中添加is_staff和is_student布尔字段,而不是每次获取结果时都要查询.
Django文档显示了查询集的extra()方法,但我无法弄清楚我应该用这种关系为纯SQL选择查询编写什么.
这该怎么做?
我认为这比Django更像是一个蟒蛇问题.
但基本上我在模特A做:
from myproject.modelb.models import ModelB
Run Code Online (Sandbox Code Playgroud)
在模型B:
from myproject.modela.models import ModelA
Run Code Online (Sandbox Code Playgroud)
结果:
无法导入名称ModelA
我做了一些禁止的事吗?谢谢
在我的应用程序中,我想从数据存储区中获取一组实体,其中Date字段设置为当前时刻之前的日期.
我确实意识到,这样做的一种方法是简单地将日期存储在这些实体中,只是long以毫秒为单位的值.
但实际上有一种方法可以将它们存储为Dates并能够使用它们进行过滤吗?
我试过类似的东西
query.setFilter("dateField.before(dateParam)"); ,但它没有用,简单的比较也没有.
提前致谢.
java google-app-engine filter java.util.date google-cloud-datastore