Небольшое улучшение ответа Мэтта, благодаря отсутствию необходимости жестко кодировать страницу входа в систему и, при необходимости, настройку представления отказа в доступе в атрибуте:
public class AccessDeniedAuthorizeAttribute : AuthorizeAttribute
{
public string AccessDeniedViewName { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.HttpContext.User.Identity.IsAuthenticated &&
filterContext.Result is HttpUnauthorizedResult)
{
if (string.IsNullOrWhiteSpace(AccessDeniedViewName))
AccessDeniedViewName = "~/Account/AccessDenied";
filterContext.Result = new RedirectResult(AccessDeniedViewName);
}
}
}
List<String> list = new ArrayList<String>() {
{
add("value1");
add("value2");
}
};
Map<String,String> map = new HashMap<String,String>() {
{
put("key1", "value1");
put("key2", "value2");
}
};
Хороший способ сделать это - использовать Коллекции Google :
List<String> list = ImmutableList.of("A", "B", "C");
Map<Integer, String> map = ImmutableMap.of(
1, "A",
2, "B",
3, "C");
для коротких списков:
List<String> ab = Arrays.asList("a","b");
Массивы можно преобразовать to List
s:
List<String> al = Arrays.asList("vote", "for", "me"); //pandering
Обратите внимание, что это не возвращает ArrayList
, а произвольный экземпляр List
(в данном случае это Array.ArrayList
)!
Подход Бруно работает лучше всего, и его можно «на лету» рассмотреть для карт.
Вы имеете в виду это?
public List<String> buildList(String first, String second)
{
List<String> ret = new ArrayList<String>();
ret.add(first);
ret.add(second);
return ret;
}
...
List<String> names = buildList("Jon", "Marc");
Или вас интересует конструктор ArrayList
который принимает коллекцию расширяет E>
? Например:
String[] items = new String[] { "First", "Second", "Third" };
// Here's one way of creating a List...
Collection<String> itemCollection = Arrays.asList(items);
// And here's another
ArrayList<String> itemList = new ArrayList<String>(itemCollection);
Похоже, вам нужен тип угла.
// Non mutable Angle class with a normalized, integer angle-value
public struct Angle
{
public Angle(int value)
{
Value = value;
}
private angle;
public Value
{
get { return angle; }
private set { angle = Normalize(value); }
}
public static int Normalize(int value)
{
if (value < 0) return 360 - (value % 360);
return value % 360;
}
}
public class SomeClass
{
public Angle EyeOrientation { get; set; }
}
Если у вас есть определенный вид значения, например, углы, деньги, вес или что-то еще, всегда полезно сделать его собственным типом, даже если само значение хранится в int, decimal и т. Д. делает ваши интерфейсы более понятными и безопасными. Это не то же самое, если вы ожидаете Угол или целое число в качестве аргумента некоторого метода.
List<String> al = Arrays.asList("vote", "for", "me"); //pandering
Обратите внимание, что это не возвращает ArrayList
, а произвольный экземпляр List
(в данном случае это Array.ArrayList
) !
Подход Бруно работает лучше всего, и его можно сразу рассмотреть для карт. Я предпочитаю другой метод для списков (см. Выше):
Map<String,String> map = new HashMap<String,String>() {
{
put("key1", "value1");
put("key2", "value2");
}
};